package IO流.文件字节输入流_一次读取完全部字节;

// 目标: 使用文件字节输入流一次读完文件的全部字节

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Arrays;

public class Test {
    public static void main(String[] args) throws Exception {
        // 可以解决字节流读取中文输出乱码的问题

        // 方式一: 自己定义一个字节数组与被读取的文件大小一样大, 然后使用该字节数组, 一次读完文件的全部字节
        // 1. 创建一个字节输入流管道与源文件接通
        InputStream is = new FileInputStream("Senior\\src\\IO流\\文件字节输入流_一次读取完全部字节\\pat");

//        // 2. 准备一个字节数组, 大小与文件的大小正好一样大.
//        File file = new File("Senior\\src\\IO流\\文件字节输入流_一次读取完全部字节\\pat");
//        long size = file.length();
//        byte[] buffer = new byte[(int)size]; // 因为数组是放在内存中创建的, 而文件实在硬盘上, 所以idea定义字节数组只能接受int类型, 所以要强转, 这也就存在一定隐患(但一般不会发生)
//        int len = is.read(buffer);
//        System.out.println(new String(buffer));
//        System.out.println(size);
//        System.out.println(len);


        // 方式二: java官方为InputStream提供如下方法, 可以直接把文件的全部字节读取到一个字节数组中返回
        // public byte[] readAllBytes() throws IOException: 直接将当前字节输入流对应的文件对象的字节数据装到一个字节数组返回

        byte[] bytes = is.readAllBytes();
        System.out.println(new String(bytes));
    }
}
